<!DOCTYPE html>
<html>

<head>
    <meta charset='utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <title>寻找两个有序数组的中位数</title>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <style>
        .box {
            display: flex;
            padding: 5%;
        }

        .left-wrap {
            width: 40%;
        }

        pre {
            text-align: left;
            margin-left: -20%;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="left-wrap">
            <div class="notranslate">
                <p>给定两个大小为 m 和 n 的有序数组&nbsp;<code>nums1</code> 和&nbsp;<code>nums2</code>。</p>

                <p>请你找出这两个有序数组的中位数，并且要求算法的时间复杂度为&nbsp;O(log(m + n))。</p>

                <p>你可以假设&nbsp;<code>nums1</code>&nbsp;和&nbsp;<code>nums2</code>&nbsp;不会同时为空。</p>

                <p><strong>示例 1:</strong></p>

                <pre>
                    nums1 = [1, 3]
                    nums2 = [2]
                    
                    则中位数是 2.0
                </pre>

                <p><strong>示例 2:</strong></p>

                <pre>
                    nums1 = [1, 2]
                    nums2 = [3, 4]
                    
                    则中位数是 (2 + 3)/2 = 2.5
                </pre>
            </div>

        </div>
    </div>
</body>
<script>
    /**
        给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。

        请你找出这两个有序数组的中位数，并且要求算法的时间复杂度为 O(log(m + n))。

        你可以假设 nums1 和 nums2 不会同时为空。

        示例 1:

        nums1 = [1, 3]
        nums2 = [2]

        则中位数是 2.0
        示例 2:

        nums1 = [1, 2]
        nums2 = [3, 4]

        则中位数是 (2 + 3)/2 = 2.5
    */

    /**
    * @param {number[]} nums1
    * @param {number[]} nums2
    * @return {number}
    */
    var findMedianSortedArrays = function (nums1, nums2) {
        var newArr = nums1.concat(nums2)
        newArr.sort(compare);
        var len = newArr.length
        var median = 0
        if (len % 2 === 0) {
            median = [newArr[parseInt(len / 2) - 1] + newArr[parseInt(len / 2)]] / 2
        } else {
            median = newArr[parseInt(len / 2)]
        }
        return median
    };
    function compare(val1, val2) {
        return val1 - val2;
    };
    console.log(findMedianSortedArrays([1, 3], [2]))
    console.log(findMedianSortedArrays([1, 2], [3, 4]))


    /*下面是大神的写法*/
    /**
    * @param {number[]} nums1
    * @param {number[]} nums2
    * @return {number}
    */
    var findMedianSortedArrays = function (nums1, nums2) {
        const arr = [...nums1, ...nums2].sort((a, b) => a - b);
        const { length } = arr;
        return length % 2 ? arr[Math.floor(length / 2)] : (arr[length / 2] + arr[length / 2 - 1]) / 2;
    };


</script>

</html>